package com.fire.control.system.module.system.service;

import org.springframework.data.domain.Pageable;

import com.fire.control.system.dto.UserDTO;
import com.fire.control.system.standard.BusinessInterfaceStandard;
import com.fire.control.system.support.protocol.account.AccountRequestProtocol;
import com.fire.control.system.support.protocol.comman.ResponseProtocol;
import com.fire.control.system.support.protocol.login.LoginRequestProtocol;

/**
 * @author liuxincheng
 * @ClassName: IRoleManagerService
 * @Description: TODO(角色管理服务)
 * @date 2017年5月20日 下午5:05:11
 */
public interface IAccountManagerService extends BusinessInterfaceStandard<AccountRequestProtocol, ResponseProtocol>{

	/**
	 * @author  liuxincheng
	 * @Title: getCountList
	 * @Description: TODO(获得账号列表)
	 * @param @param protocol
	 * @param @param p
	 * @param @return    设定文件
	 * @return ResponseProtocol    返回类型
	 * @throws null
	 */
	public ResponseProtocol getCountList(AccountRequestProtocol protocol,Pageable p);
	
	/**
	 * @author  liuxincheng
	 * @Title: getCountListByCondition
	 * @Description: TODO(通过条件获得账号列表)
	 * @param @param protocol
	 * @param @param p
	 * @param @return    设定文件
	 * @return ResponseProtocol    返回类型
	 * @throws null
	 */
	public ResponseProtocol getCountListByCondition(AccountRequestProtocol protocol,Pageable p);
	
	/**
	 * @author  liuxincheng
	 * @Title: saveAccount
	 * @Description: TODO(添加管理员)
	 * @param @param protocol
	 * @param @return    设定文件
	 * @return ResponseProtocol    返回类型
	 * @throws null
	 */
	public ResponseProtocol saveAccount(AccountRequestProtocol protocol,UserDTO user);
	
	/**
	 * @author liuxincheng
	 * @Title: updateAccount
	 * @Description: TODO(修改管理员)
	 * @param @param protocol
	 * @param @param user
	 * @param @return    设定文件
	 * @return ResponseProtocol    返回类型
	 * @throws
	 */
	public ResponseProtocol updateAccount(AccountRequestProtocol protocol,UserDTO user);
	
	/**
	 * @author liuxincheng
	 * @Title: deleteAccount
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @param @param protocol
	 * @param @param user
	 * @param @return    设定文件
	 * @return ResponseProtocol    返回类型
	 * @throws
	 */
	public ResponseProtocol deleteAccount(AccountRequestProtocol protocol,UserDTO user);
	/**
	 * @author  liuxincheng
	 * @Title: saveRole
	 * @Description: TODO(用户分配角色)
	 * @param @param protocol
	 * @param @return    设定文件
	 * @return ResponseProtocol    返回类型
	 * @throws null
	 */
	public ResponseProtocol userAssignRoles(AccountRequestProtocol protocol,UserDTO user);
	
	/**
	 * @author  liuxincheng
	 * @Title: getLogList
	 * @Description: TODO(获得操作日志列表)
	 * @param @param protocol
	 * @param @return    设定文件
	 * @return ResponseProtocol    返回类型
	 * @throws null
	 */
	public ResponseProtocol getLogList(AccountRequestProtocol protocol,Pageable p);
	
	/**
	 * @author  liuxincheng
	 * @Title: gerLogsByCondition
	 * @Description: TODO(通过条件获得日志列表)
	 * @param @param protocol
	 * @param @param p
	 * @param @return    设定文件
	 * @return ResponseProtocol    返回类型
	 * @throws null
	 */
	public ResponseProtocol gerLogsByCondition(AccountRequestProtocol protocol,Pageable p);
	
	/**
	 * @author liuxincheng
	 * @Title: getResourcesByUser
	 * @Description: TODO(获取用户下资源)
	 * @param @param requestProtocol
	 * @param @param user
	 * @param @return    设定文件
	 * @return ResponseProtocol    返回类型
	 * @throws null
	 */
	public ResponseProtocol getResourcesByUser(LoginRequestProtocol requestProtocol,UserDTO user);
}
